﻿using System.ComponentModel;
using System.Web.Services;
using System.Data;
using Customs.Components.KDT.GC;
using Customs.Components.KDT.GC.Info;
using System;
namespace Customs.WS
{
    /// <summary>
    /// Khai điện tử cho loại hình GC.
    /// </summary>
    public class KDT_GC_Service : WebService
    {
        #region GC: Tờ khai chuyển tiếp.

        /// <summary>
        /// Đăng ký thông tin tờ khai chuyển tiếp
        /// </summary>
        /// <param name="TKCTInfo">Thông tin tờ khai chuyển tiếp</param>
        /// <param name="DanhSachDaDangKy">Danh sách tờ khai đã đăng ký.</param>
        /// <returns>Số tiếp nhận.</returns>
        [WebMethod(Description = "Khai báo tờ khai gia công chuyển tiếp")]
        public long ToKhaiChuyenTiep_Send(ToKhaiChuyenTiepInfo TKCTInfo)
        {

            ToKhaiChuyenTiep tkct = new ToKhaiChuyenTiep();
            // Khởi tạo các giá trị mặc định.
            TKCTInfo.Nam_TN = System.Convert.ToInt16(System.DateTime.Today.Year);
            TKCTInfo.TrangThaiXL = 0;

            // Nạp giá trị từ tham số truyền vào.
            tkct.Load(TKCTInfo);
            return tkct.InsertFull();

        }

        //-----------------------------------------------------------------------------------------

        [WebMethod(Description = "Cập nhật thông tin tờ khai gia công chuyển tiếp")]
        public DataSet ToKhaiChuyenTiep_RequestStatus(long SoTiepNhan, string MaHaiQuan, string MaDoanhNghiep, short NamTiepNhan)
        {
            string select = "SELECT * FROM tblDCTGC M INNER JOIN tblDHangCTGC D ON M.So_TNDKDT = D.So_TNDKDT AND M.Ma_HQTN = D.Ma_HQTN AND M.Nam_TN = D.Nam_TN";
            string where = string.Format(" WHERE M.So_TNDKDT = {0} AND M.Ma_HQTN = '{1}' AND M.DVGC = '{2}' AND M.Nam_TN = {3}", SoTiepNhan, MaHaiQuan.PadRight(6), MaDoanhNghiep, NamTiepNhan);
            string query = select + where;
            return Customs.Components.KDTSelectHelper.SelectDataSetDynamic(query);
            return null;
        }

        //-----------------------------------------------------------------------------------------

        [WebMethod(Description = "Hủy thông tin tờ khai gia công chuyển tiếp đã khai báo")]
        public bool ToKhaiChuyenTiep_Cancel(long SoTiepNhan, string MaHaiQuan, string MaDoanhNghiep, int NamTiepNhan)
        {
            return ToKhaiChuyenTiep.HuyThongTinKhaiBao(SoTiepNhan, MaHaiQuan, MaDoanhNghiep, NamTiepNhan);
        }

        #endregion

        #region GC: Hợp đồng gia công.

        /// <summary>
        /// Đăng ký thông tin hợp đồng gia công
        /// </summary>
        /// <param name="HopDongInfo">Thông tin hợp đồng gia công</param>
         /// <returns>Số tiếp nhận.</returns>
        [WebMethod(Description = "Khai báo một hợp đồng gia công ")]
        public long HopDong_Send(HopDongInfo entity)
        {

            HopDong hopdong = new HopDong();
            return hopdong.KhaiBaoHopDong(entity);          
        }

        [WebMethod(Description = "Khai báo nhiều hợp đồng gia công ")]
        public HopDongInfoCollection HopDong_Sends(HopDongInfoCollection collection)
        {

            HopDong hopdong = new HopDong();
            hopdong.KhaiBaoHopDong(collection);
            return collection;
        }
        //-----------------------------------------------------------------------------------------

        [WebMethod(Description = "Hủy một hợp đồng gia công đã khai báo")]
        public bool HopDong_Cancel(long SoTiepNhan, string MaHaiQuan, short NamTiepNhan)
        {
            HopDong hopdong = new HopDong();
            hopdong.SoTiepNhan = SoTiepNhan;
            hopdong.NamTiepNhan = NamTiepNhan;
            hopdong.MaHaiQuan = MaHaiQuan;
            return hopdong.HuyHopDong();
        }


        [WebMethod(Description = "Hủy nhiều hợp đồng gia công đã khai báo")]
        public bool HopDong_Cancels(HopDongInfoCollection collection)
        {
            HopDong.HuyHopDong(collection);
            return true;
        }
        //-----------------------------------------------------------------------------------------

        //[WebMethod(Description = "Cập nhật thông tin một hợp đồng gia công")]
        //public HopDongInfo HopDong_RequestStatus(long SoTiepNhan, string MaHaiQuan, short NamTiepNhan)
        //{            
        //    return HopDong.RequestStatus(SoTiepNhan, MaHaiQuan, NamTiepNhan);
        //}

        [WebMethod(Description = "Cập nhật thông tin trạng thái của nhiều hợp đồng gia công")]
        public HopDongInfoCollection HopDong_Request(HopDongInfoCollection collection)
        {
            return HopDong.RequestStatus(collection);
        }

        [WebMethod(Description = "download thông tin trạng thái của nhiều hợp đồng gia công")]
        public HopDongInfo HopDong_DownLoad(long SoTiepNhan, string MaHaiQuan, short NamTiepNhan)
        {
            return HopDong.DownLoad(SoTiepNhan, MaHaiQuan, NamTiepNhan);
        }
        //-----------------------------------------------------------------------------------------

        #endregion

        #region GC: Phụ kiện hợp đồng gia công.

        /// <summary>
        /// Đăng ký thông tin Phụ kiện hợp đồng gia công
        /// </summary>
        /// <param name="PhuKienDangKyInfoCollection">Thông tin Phụ kiện hợp đồng gia công</param>
        /// <returns>Số tiếp nhận.</returns>
        [WebMethod(Description = "Khai báo Phụ kiện gia công ")]
        public long PhuKien_Send(PhuKienDangKyInfoCollection collection)
        {

            PhuKienDangKy pk = new PhuKienDangKy();           
            return pk.KhaiBaoPhuKien(collection);
        }

        //-----------------------------------------------------------------------------------------

        [WebMethod(Description = "Hủy thông tin tờ khai phụ kiện gia công đã khai báo")]
        //pkInfo phải có các thông tin về hợp đồng và số phụ kiện

        public bool PhuKien_Cancel(PhuKienDangKyInfo pkInfo)//
        {
            PhuKienDangKy pk = new PhuKienDangKy();
            return pk.HuyPhuKien(pkInfo);
        }
        //-----------------------------------------------------------------------------------------

        [WebMethod(Description = "Cập nhật thông tin môt phụ kiện hợp đồng gia công")]
        public PhuKienDangKyInfoCollection PhuKien_Request(long SoTiepNhan, string MaHaiQuan, short NamTiepNhan)
        {
            return PhuKienDangKy.Request_Status(MaHaiQuan, SoTiepNhan, NamTiepNhan);            
        }

      
       
        //-----------------------------------------------------------------------------------------

        //[WebMethod(Description = "Cập nhật thông tin trạng thái nhiều phụ kiện hợp đồng gia công")]
        //public PhuKienDangKyInfoCollection PhuKien_Request(PhuKienDangKyInfoCollection collection)
        //{
        //    return PhuKienDangKy.Request_Status(collection);
        //}
        #endregion

        #region GC: Định mức hợp đồng gia công.

        /// <summary>
        /// Đăng ký thông tin Định mức hợp đồng gia công
        /// </summary>
        /// <param name="DinhMucInfoCollection">Thông tin Định mức hợp đồng gia công</param>
        /// <returns>Số tiếp nhận.</returns>
        [WebMethod(Description = "Khai báo Định mức gia công ")]
        public long DinhMuc_Send(DinhMucInfoCollection collection)
        {

            DinhMuc dm = new DinhMuc();
            return dm.KhaiBaoDinhMuc(collection);
        }
      

        //-----------------------------------------------------------------------------------------

        //pkInfo phải có các thông tin về hợp đồng và số phụ kiện
        /// </summary>
        /// <param name="dmInfo">Chứa các thông tin số tiếp nhận, mã hải quan và năm tiếp nhận</param>
        /// <returns>Số tiếp nhận.</returns>
        [WebMethod(Description = "Hủy thông tin tờ khai định mức gia công đã khai báo")]        
        public bool DinhMuc_Cancel(DinhMucInfo dmInfo)//
        {
            DinhMuc dm = new DinhMuc();
            dm.Load(dmInfo);
            return dm.HuyDinhMuc();
        }
        //-----------------------------------------------------------------------------------------

        [WebMethod(Description = "Cập nhật thông tin môt định mức hợp đồng gia công")]
        public DinhMucInfoCollection DinhMuc_RequestStatus(long SoTiepNhan, string MaHaiQuan, short NamTiepNhan)
        {
            return DinhMuc.RequestStatus(MaHaiQuan, NamTiepNhan, SoTiepNhan);
        }

        //-----------------------------------------------------------------------------------------

        #endregion

    }
}
